﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Linq;

namespace MvcApplication1.Models
{
    public partial class Liga
    {
        public void IniciarLiga(IOrganizador organizador)
        {
            RepositorioPartidos repoPartidos = new RepositorioPartidos();

            List<Partido> partidos = organizador.Organizar(this.Equipos.ToList());
            
            foreach(Partido p in partidos)
            {
                p.IDLiga = this.IDLiga;
            }

            this.Inicalizada = true;

            repoPartidos.AgregarPartidos(partidos);
            repoPartidos.Save();
        }

        public bool EsValido
        {
            get { return (GetViolacionesDeReglas().Count() == 0); }
        }

        public IEnumerable<RuleViolation> GetViolacionesDeReglas()
        {
            if (String.IsNullOrWhiteSpace(this._Nombre))
                yield return new RuleViolation("Nombre de liga requerido", "_Nombre");
        }

        partial void OnValidate(ChangeAction action)
        {
            if (!EsValido)
                throw new ApplicationException("Rule violations prevent saving");
        }

        public override string ToString()
        {
            return this.Nombre;
        }
    }

    public interface IOrganizador
    {
        //Ver bien lo del EntitySet
        List<Partido> Organizar(List<Equipo> equipos);
    }
}